package practice_2025_8_19;

import java.util.*;


public class Solution {
    /**
     *
     * 旋转字符串
     * @param A string字符串 
     * @param B string字符串 
     * @return bool布尔型
     */
    public boolean solve (String A, String B) {
        // write code here
        // 将 A 从中间某个位置分割为左右两个字符串（可以为 null）
        // 左边移动到右边后 -> 新字符串可以变成 b -> true
        // 可能会相同:
        // 1. a 和 b 长度相同 & 包含的字符种类和个数相同
        if (A.length() != B.length()) {
            return false;
        }
        // 找到 A 中能与字符 B 相匹配的后面一段
        // 总共: len - 1 : len - 1 - i
        // 分成两段: [0, i - 1], [i, len - 1]
        int end = -1;
        for (int i = 0; i < A.length(); i++) {
            if (A.charAt(i) == B.charAt(0)) {
                // 尝试匹配 A[i, len - 1] 和 B[0, i - 1]
                if (judge(A, B, i)) {
                    end = i;
                    break;
                }
            }
        }
        // 后半段是否匹配成功
        System.out.println(end);
        if (end == -1) {
            return false;
        }

        int begin = A.length() - end;
        for (int i = 0; i < end; i++) {
            if (A.charAt(i) != B.charAt(begin + i)) {
                return false;
            }
        }
        return true;
    }

    /**
     * 解法2
     * @param A
     * @param B
     * @return
     */
    public boolean solve2 (String A, String B) {
        // write code here
        if (A.length() != B.length()) {
            return false;
        }
        return (A + A).contains(B);
    }

    public boolean judge(String A, String B, int end) {
        int begin = A.length()- end;
        for (int i = 0; i < end; i++) {
            if (B.charAt(i) != A.charAt(begin + i)) {
                return false;
            }
        }
        System.out.println(end);
        return true;
    }
}